#include <fstream>
#include <vector>
#include "Lex.h"
#include "Gram.h"
#include "Sem.h"
#include "Interpreter.h"

using namespace std;

int main() {
    ifstream data{"main4.fpl"};
    Lex lex;
//    vector<Token> result;
//    bool rs = lex.analyze(data, result);
//    if (rs) {
//        lex.output(result);
//    }
    Gram gram;
    bool rs = gram.analyze(data, lex);
    if (!rs) return -1;
//    Gram::printSyntaxTree(gram.root);
    Sem sem{lex, gram};
    rs = sem.generate();
    if (!rs) return -1;
    sem.output();
//    Interpreter interpreter{sem};
//    interpreter.execute();
    return 0;
}
